package cn.edu.tju.elm.dto.wallet;

import java.math.BigDecimal;

/**
 * 钱包操作请求数据传输对象
 * 用于统一处理各种钱包操作请求
 */
public class WalletOperationDto {
    private Long userId;
    private Long walletId;
    private BigDecimal amount;
    private Long businessId;
    private Long orderId;
    private Long targetUserId;
    private String targetPhoneNumber;
    private String remark;
    private Boolean includeFrozen;
    private Boolean allowOverdraft;  // 是否允许使用透支额度
    private Long operator;
    
    // Getters and Setters
    public Long getUserId() {
        return userId;
    }
    
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    
    public Long getWalletId() {
        return walletId;
    }
    
    public void setWalletId(Long walletId) {
        this.walletId = walletId;
    }
    
    public BigDecimal getAmount() {
        return amount;
    }
    
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    
    public Long getBusinessId() {
        return businessId;
    }
    
    public void setBusinessId(Long businessId) {
        this.businessId = businessId;
    }
    
    public Long getOrderId() {
        return orderId;
    }
    
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    
    public Long getTargetUserId() {
        return targetUserId;
    }
    
    public void setTargetUserId(Long targetUserId) {
        this.targetUserId = targetUserId;
    }

    public String getTargetPhoneNumber() {
        return targetPhoneNumber;
    }

    public void setTargetPhoneNumber(String targetPhoneNumber) {
        this.targetPhoneNumber = targetPhoneNumber;
    }
    
    public String getRemark() {
        return remark;
    }
    
    public void setRemark(String remark) {
        this.remark = remark;
    }
    
    public Boolean getIncludeFrozen() {
        return includeFrozen;
    }
    
    public void setIncludeFrozen(Boolean includeFrozen) {
        this.includeFrozen = includeFrozen;
    }
    
    public Boolean getAllowOverdraft() {
        return allowOverdraft != null ? allowOverdraft : true;  // 默认允许透支
    }
    
    public void setAllowOverdraft(Boolean allowOverdraft) {
        this.allowOverdraft = allowOverdraft;
    }
    
    public Long getOperator() {
        return operator;
    }
    
    public void setOperator(Long operator) {
        this.operator = operator;
    }
}
